function reactive(obj) {
  if (typeof obj === 'object') {
    //如果是一个数组，那么取出数组中的每一个元素
    //判断每一个元素是否又是一个对象，如果是，那么也需要包装成prox
    if (obj instanceof Array) {
      obj.forEach((item, index) => {
        obj[index] = reactive(item)
      })
    } else {
      // 如果是一个对象，那么取出对象的属性取值
      // 判断对象的取值是否又是一个对象，如果有事一个对象，那么也需要包装成proxy
      for (let key in obj) {
        let item = obj[key]
        if (typeof item === 'object') {
          obj[key] = reactive(item)
        }
      }
    }

  } else {
    return new Proxy(obj, {
      get(obj, key) {
        return obj[key]
      },
      set(obj, key, val) {
        obj[key] = val
        console.log('更新ui数据')
        return true
      }
    })
  }
}


const obj = {
  a: 'a',
  gf: {
    b: 'b',
    f: {
      c: 'c',
      s: {
        d: 'd'
      }
    }
  }
}


let state = shallowRef(obj)
state.a = 1
state.a.gf.b = 3
state.a.gf.f.c = 4